package com.ldcc.report_system.component;

import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.widget.TextView;

import androidx.annotation.NonNull;

import com.ldcc.report_system.R;

/**
 * @author wwj[yeshengkele@outlook.com]
 * @description 自定义对话框
 */
public class UpdateOrDeleteDialog extends Dialog {
    // 上下文
    // 第一个组件
    private TextView firstText;
    // 第一个组件显示文字
    private String firstValue = "修改";

    // 第二个组件
    private TextView secondText;
    // 第二个组件显示得文字
    private String secondValue = "删除";

    // 取消按钮
    private TextView cancel;
    // 取消按钮显示的文字
    private String cancelValue = "取消";

    // 事件
    private OnClickListener onClickListener;

    //携带的信息
    private String data;

    /**
     * 默认构造
     *
     * @param context 上下文
     */
    public UpdateOrDeleteDialog(@NonNull Context context) {
        super(context);
    }

    /**
     * @param context         上下文
     * @param themeResId      样式资源
     * @param onClickListener 监听事件
     */
    public UpdateOrDeleteDialog(@NonNull Context context, int themeResId, OnClickListener onClickListener) {
        super(context, themeResId);
        this.onClickListener = onClickListener;
    }

    /**
     * @param context         上下文
     * @param themeResId      样式资源
     * @param onClickListener 监听事件
     * @param data            携带的数据
     */
    public UpdateOrDeleteDialog(@NonNull Context context, int themeResId, OnClickListener onClickListener, String data) {
        super(context, themeResId);
        this.onClickListener = onClickListener;
        this.data = data;
    }


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.list_item_update_or_delete_dialog);
        // 取消对话框的关闭
        setCanceledOnTouchOutside(false);
        this.initView();
    }

    private void initView() {
        this.firstText = findViewById(R.id.first_text);
        this.firstText.setText(this.firstValue);
        this.firstText.setOnClickListener(view -> {
            onClickListener.firstClick(this, this.data);
        });

        this.secondText = findViewById(R.id.second_text);
        this.secondText.setText(this.secondValue);
        this.secondText.setOnClickListener(view -> {
            onClickListener.secondClick(this, this.data);
        });
        this.cancel = findViewById(R.id.cancel);
        this.cancel.setText(this.cancelValue);
        this.cancel.setOnClickListener(view -> {
            this.dismiss();
        });
    }

    /**
     * 事件支持
     */
    public interface OnClickListener {
        // 第一个按钮事件
        void firstClick(Dialog dialog, String data);

        // 第二个按钮事件
        void secondClick(Dialog dialog, String data);

        // 取消按钮事件
        // void cancelClick(Dialog dialog);
    }

    /**
     * 链式调用支持
     */
    public UpdateOrDeleteDialog setFirstValue(String firstValue) {
        this.firstValue = firstValue;
        return this;
    }

    public UpdateOrDeleteDialog setSecondValue(String secondValue) {
        this.secondValue = secondValue;
        return this;
    }

    public UpdateOrDeleteDialog setCancelValue(String cancelValue) {
        this.cancelValue = cancelValue;
        return this;
    }

    public TextView getFirstText() {
        return firstText;
    }

    public void setFirstText(TextView firstText) {
        this.firstText = firstText;
    }

    public TextView getSecondText() {
        return secondText;
    }

    public void setSecondText(TextView secondText) {
        this.secondText = secondText;
    }

    public TextView getCancel() {
        return cancel;
    }

    public void setCancel(TextView cancel) {
        this.cancel = cancel;
    }
}
